<?php 


$hehe = function ($a)
{
    echo $a;
}; // FBI WARNING: 此处必须有 分号.

$hehe('呵呵哒');

// echo $hehe;
var_dump($hehe);

echo '<hr>';
// 要在匿名函数内部 使用外部全局变量
// 必须通过 use 关键字,来连接闭包函数和外部全局变量
$func = function () use(&$x, &$y)
{
    $x *= 2;
    $y *= 3;
    $z = $x + $y;
    return $z;
};

$x = 3;
$y = 3;

echo $func();

echo '<hr>';


function demo(){
    $m = 3;
    $n = 3;
    // 闭包函数
    $func = function () use($m, $n)
    {
        $m *= 2;
        $n *= 3;
        $w = $m + $n;
        return $w;
    };
    return $func();
}

echo demo();


echo '<hr>';
// 回调函数
function getInfo($func)
{
    $func('鲜血与荣耀, 为了部落!!');
}

function bl($str)
{
    echo '回调方式处理: '. $str;
}
getInfo('bl');

echo '<br>';
getInfo(function($str) {
    echo '闭包方式处理: '. $str;
});

getInfo(function($str) {
    var_dump($str);
});


